//
//  YXStatusCell.swift
//  yanXiangWeiBo
//
//  Created by 颜祥 on 15/12/23.
//  Copyright © 2015年 yanxiang. All rights reserved.
//

import UIKit
import FFAutoLayout

class YXStatusCell: UITableViewCell
{
    // 微博配图的高度约束
    var pictureViewWidthCon: NSLayoutConstraint?
    
    // 微博配图的宽度约束
    var pictureViewHeigthCon: NSLayoutConstraint?
    
    // cell要显示内容需要微博模型
    var status: YXStatus?
    {
        didSet
        {
            // 1.当控制器给cell设置模型对象时,顶部视图显示数据也是依赖模型对象
            topView.status = status
            
            // 2.设置文本内容
            contentLabel.text = status?.text
            
            // 3.显示微博配图
            pictureView.status = status
            // 获得计算好的微博配图尺寸
            let size = pictureView.calPicSize()
            // 修改配图大宽度和高度
            pictureViewWidthCon?.constant = size.width
            pictureViewHeigthCon?.constant = size.height
            
        }
    }
    
    // MARK: - cell自己计算行高
    func rowHeight(status: YXStatus) -> CGFloat
    {
        // cell会根据status里面的内容来重新设置里面子控件的内容
        self.status = status
        
        // 更新布局，系统会根据cell里面的内容和约束来更新里面子控件的位置和大小
        self.layoutIfNeeded()
        
        // 获取底部视图的最大Y值
        let maxY = CGRectGetMaxY(bottomView.frame)
        
        // 返回
        return maxY
    }
    
    
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
        
    }
    override init(style: UITableViewCellStyle, reuseIdentifier: String?)
    {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        // 准备UI
        prepareUI()
   
    }
    
    // MARK: -  准备UI
    private func prepareUI()
    {
        // 1.添加首页cell顶部视图
        contentView.addSubview(topView)
        
        // 2.添加文本内容
        contentView.addSubview(contentLabel)
        
        // 3.添加微博配图
        contentView.addSubview(pictureView)
        
        // 4.添加底部按钮视图
        contentView.addSubview(bottomView)
        
        
        //-- 添加约束
        //--1. 顶部视图
        topView.ff_AlignInner(ff_AlignType.TopLeft, referView: contentView, size: CGSize(width: UIScreen.mainScreen().bounds.width, height: 44))
        
        //--2. 文本内容
        contentLabel.ff_AlignVertical(ff_AlignType.BottomLeft, referView: topView, size: nil, offset: CGPoint(x: 8, y: 8))
        //--3. 文本宽度约束
        contentView.addConstraint(NSLayoutConstraint(item: contentLabel, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: UIScreen.mainScreen().bounds.width - 2*8))
        
        //--4.微博配图
        let pictureViewCon = pictureView.ff_AlignVertical(ff_AlignType.BottomLeft, referView: contentLabel, size: CGSize(width: 290, height: 290), offset: CGPoint(x: 0, y: 8))
        // 高度和宽度
        pictureViewWidthCon = pictureView.ff_Constraint(pictureViewCon, attribute: NSLayoutAttribute.Width)
        pictureViewHeigthCon = pictureView.ff_Constraint(pictureViewCon, attribute: NSLayoutAttribute.Height)
        
        //--5. 底部按钮视图
        bottomView.ff_AlignVertical(ff_AlignType.BottomLeft, referView: pictureView, size: CGSize(width: UIScreen.mainScreen().bounds.width, height: 44), offset: CGPoint(x: -8, y: 8))
        
        // contentView里面的cell想通过里面的内容来自适应，根据内容的多少来自动调节contentView的高度，需要给contentView添加顶部和底部约束
        contentView.addConstraint(NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: contentLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 8))
        
        
    }
    
    
    // MARK: - 懒加载
    // 顶部视图
    private lazy var topView: YXTopView = YXTopView()
    
    // 文本内容
    private lazy var contentLabel: UILabel =
    {
        // 创建文本
        let contentLabel = UILabel()
        
        // 设置文本字体大小
        contentLabel.font = UIFont.systemFontOfSize(14)
        
        // 设置文本颜色
        contentLabel.textColor = UIColor.darkGrayColor()
        
        // 设置换行
        contentLabel.numberOfLines = 0
        
        // 返回
        return contentLabel
        
    }()
    
    // 底部按钮视图
    private lazy var bottomView: YXBottomView = YXBottomView()
    
    // 微博配图
    private lazy var pictureView: YXStatusPictureView = YXStatusPictureView()
    
    
    
    
}
